pub fn convert_base(num_str: &str, to_base: u32) -> String {
    let mut parts = num_str.split('('); // 通过 '(' 进行分割
    let number = parts.next().unwrap(); // 获取输入数字
    let base_from: u32 = parts.next().unwrap().trim_end_matches(')').parse().unwrap(); // 获取进制，到 ')' 即为进制字符的结束位置

    // 将 number 从原来的进制转换为10进制
    let mut decimal = 0; 
    for (i, c) in number.chars().rev().enumerate() { // 字符串翻转，先从低位开始，i代表c是的位阶
        let digit_value = match c.to_digit(base_from) { // 将c从原来的进制转换为10进制数
            Some(v) => v as usize,
            None => panic!("Invalid character in number."),
        };
        decimal += digit_value * usize::pow(base_from as usize, i as u32); // 加上 digit_value 乘 原进制的位阶次幂
    }

    // 如果值为0直接返回0
    if decimal == 0 {
        return "0".to_string();
    }

    // 将10进制的 number 转换为 to_base 声明的进制
    let mut result = String::new();
    let mut n = decimal as u32;
    while n > 0 {
        let digit = n % to_base; // 按位阶处理
        result.push(char::from_digit(digit, to_base).unwrap()); // 从10进制转换为to_base进制,低位在前
        n /= to_base;
    }
    result.chars().rev().collect() // 输出前要反转，将高位放在最前面
}